package udp;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

/**
 * @author DCSGO
 * @version 1.0
 * 1.编写一个接收端A,和一个发送端B
 * 2.接收端A在9999端口等待接收数据(receive)
 * 3.发送端B向接收端A发送数据"hello，明天吃火锅~"
 * 4.接收端A接收到发送端B发送的数据，回复"好的,明天见"，再退出
 * 5.发送端接收回复的数据，再退出
 */
public class UDPReceiverA {
    public static void main(String[] args) throws IOException {
        int port = 9999;
        //1.创建一个 datagramSocket 收发数据 并指定其端口号
        DatagramSocket datagramSocket = new DatagramSocket(port);

        //2.创建 datagramPacket 用于接收数据
        byte[] data = new byte[1024];
        DatagramPacket datagramPacket = new DatagramPacket(data, data.length);

        //3.接收数据 在发送端发送数据前 该程序将在此阻塞
        System.out.println("A端等待接收数据...");
        datagramSocket.receive(datagramPacket);

        //4.将接收到的数据解包
        int length = datagramPacket.getLength();
        String s = new String(data, 0, length);
        System.out.println(s);

        //发送回复信息
        byte[] data2 = "好的,明天见".getBytes();
        DatagramPacket datagramPacket2 =
                new DatagramPacket(data2, data2.length, InetAddress.getByName("192.168.124.10"), 9998);
        datagramSocket.send(datagramPacket2);
        System.out.println("回复信息已发送！");

        //5.关闭相关资源
        datagramSocket.close();
        System.out.println("A端已退出...");
        /*
         * A端等待接收数据...
         * hello，明天吃火锅~
         * 回复信息已发送！
         * A端已退出...
         *
         * 进程已结束，退出代码为 0
         */
    }
}
